目錄
根據 ESP32-CAM 的規格書上所說,它支持 OV2640 和 OV7670 攝像頭,而我們所下載的韌體版本只支援 OV2640,在操作軟體之前必需先理解一下硬體規格,這樣才可以有效的發揮它的硬體效能。
OV2640 硬體規格:
以下所寫的語法都僅支持 esp32-cam-micropython-2022 所提供的韌體,如果更換韌體,語法將完全不同。
使用以下語法列出所有相關方法與屬性
import camera
for item in dir(camera):
print(item)
輸出結果為:
__class__
__name__
__dict__
aecvalue
aelevels
agcgain
brightness
capture
capture_bmp
capture_jpg
conf
contrast
deinit
flip
framesize
init
mirror
pixformat
quality
saturation
speffect
whitebalance
camera.init()
初始化攝像頭
camera.deinit()
關閉攝像頭
camera.framesize()
OV2640 模組所支援的解析度包含下列這些,輸入數字即可,如 camera.framesize(10) 表示設定為 800x600 像素
camera.capture()
拍攝照片並保存
camera.brightness()
設置攝像頭亮度,值為 -2,2 (default 0)
camera.whitebalance()
設置攝像頭白平衡,如 camera.whitebalance(1)
camera.saturation()
設置攝像頭飽和度,值為 -2,2 (default 0)
camera.speffect()
設置攝像頭濾鏡
camera.mirror()
設置攝像頭鏡像效果,值為 0,1
camera.flip()
設置攝像頭旋轉,值為 0,1
camera.quality()
攝像質量,值為 10-63 數字越低意味著質量越高
以下程式會利用 esp32-cam 拍攝一張照片,請檔名為當前時間。
import camera
import io
import time
res = camera.init()
if res:
camera.framesize(10)
camera.contrast(2)
camera.speffect(2)
time.sleep(2)
img=camera.capture()
(year, month, day, hour, minute, second, weekday, yearday) = time.gmtime(time.time())
image_name = f'{year}{month}{day}_{hour}{minute}{second}_image.jpg'
f = open(image_name, 'wb')
f.write(img)
f.close()
camera.deinit()
else:
print('camera is not ready, reset ESP32-CAM')
圖 1. 程式執行結果,會在esp32-cam儲存一個圖片
圖 2. 將圖片下載到本機觀看
圖 3. 依照上面的設定解析度為 800x600